Many computing systems (e.g., personal computers, servers, networked computers, etc.) include multicore processors. Multicore processors contain two or more independent processing units, i.e., “cores,” which read and execute program instructions. Systems with multicore processors are able to perform more operations simultaneously due to the parallel computing functionality afforded by the multicore processors. In some multicore processing systems, each of the processing units can access the main-system memory in addition to memory local to each of the processing units. Additionally, the processing units may also be able to access non-local memory. Non-local memory may include memory that is local to another processor or memory that is shared between processors, for example, the main-system memory. In some multicore processing systems, the access time for a single processor to access different memory (e.g., local, non-local, etc.) is different and can add significant time to the execution of processes. The increase in memory access time may become a problem for performance-critical software.